package com.yun.algorithmproblem.leetcode;

/**
 * 45. 跳跃游戏 II
 * <p>
 * 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。
 * <p>
 * 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说，如果你在 nums[i] 处，你可以跳转到任意 nums[i + j] 处:
 * <p>
 * 0 <= j <= nums[i]
 * i + j < n
 * 返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。
 */
public class Leetcode45 {

    public static void main(String[] args) {
        Leetcode45 obj = new Leetcode45();
        int[] nums = new int[]{2, 3, 1, 1, 4};
        System.out.println(obj.jump(nums));
    }

    public int jump(int[] nums) {
        int ans = 0;
        int curRight = 0;
        int nextRight = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            nextRight = Math.max(nextRight, i + nums[i]);
            if (i == curRight) {
                curRight = nextRight;
                ans++;
            }
        }
        return ans;
    }
}
